The present invention relates for data compression and decompression techniques for programmable circuits, and more particularly, to techniques for reducing the size of data used to configure programmable circuits using data compression and decompression.
In many applications, it is desirable to reduce the size of a particular quantity of data. Reducing the size of data saves memory space. In data transmission applications, it is desirable to reduce the size of data to reduce bandwidth requirements associated with a data transmission system.
The size of data can be reduced by compressing the data using data compression techniques. Compressed data can be converted back into the original data using data decompression techniques.
Data can be compressed using a variety of data compression techniques. For example, data can be compressed using an arithmetic coding. Data can also be compressed using Huffman coding. These two techniques are well known in the art of data compression.
Altera's EPC16 is a prior art system that uses data decompression. The EPC16 decompresses compressed configuration data before sending the data to a programmable logic device configuration unit.
According to the EPC16 system, each 16-bit word of input data is compressed into 4-bit nibbles that equal each non-zero set of 4 input bits plus a final 4-bit nibble. If the first set of 4-bits in an input 16-bit word are all zeros, the compressor outputs a zero as the first bit in the final output 4-bit nibble. If the first set of 4 input bits includes a one, the compressor outputs a one as the first bit in the final 4-bit nibble, and the compressor outputs the first set of 4 input bits as the first output 4-bit nibble.
If the second set of 4-bits in an input 16-bit word are all zeros, the compressor outputs a zero as the second bit in the final output 4-bit nibble. If the second set of 4 input bits includes a one, the compressor outputs a one as the second bit in the final output 4-bit nibble, and the compressor outputs the second set of 4 input bits as the first or second output 4-bit nibble. This process repeats for each subsequent set of 4 bits in the input 16-bit word.
If all 4 sets of 4 bits in an input 16-bit word are non-zero, the EPC16 compression system outputs 20 bits. If 3 of the 4 sets of 4 bits in an input 16-bit word are non-zero, the EPC16 compression system outputs 16 bits.
Thus, for some sets of input data, the EPC16 compression system does not reduce the number of output bits relative to the corresponding number of input bits. This is a significant disadvantage of the EPC16 compression system.
The EPC16 system does not use parameters to increase compression of the data. The compressed data is decompressed by reversing the compression process.
It would therefore be desirable to increase the data compression of configuration data for programmable circuits by using parameters that are selected based on properties of the configuration data.